﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Utilitarios;
using Iudicium.Busqueda;

public partial class Seguridad_Usuarios_ListaUsuarios : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    protected void Page_Load(object sender, EventArgs e)
    {
        ControlDeNotificacion.Visible = false;
    }

    protected void SearchLinkButton_Click(object sender, EventArgs e)
    {
        UsuariosGridView.DataBind();
    }

    protected void UsuariosGridView_RowCommand(object sender, CommandEventArgs e)
    {
        int usuarioId = 0;

        try
        {
            usuarioId = Convert.ToInt32(e.CommandArgument);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener id del Rol para el comando", ex);
            return;
        }

        if (e.CommandName.Equals("EDITAR"))
        {
            Session["UsuarioId"] = usuarioId;
            Response.Redirect("~/Seguridad/Usuarios/FormularioUsuario.aspx");
            return;
        }
        if (e.CommandName.Equals("ELIMINAR"))
        {
            try
            {
                Iudicium.Seguridad.CRN.UsuarioCRN.DeleteUsuario(usuarioId);
                Notificacion.MostrarNotificacion("El Usuario se eliminó correctamente", Notificacion.TipoNotificacion.Alert);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo eliminar el Rol con id: " + usuarioId, ex);
                Notificacion.MostrarNotificacion("Ocurrió un error al eliminar el Usuario", Notificacion.TipoNotificacion.Error);
            }
            finally
            {
                Response.Redirect("~/Seguridad/Usuarios/ListaUsuarios.aspx");
            }
        }
    }

    protected void UsuariosGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int userId = Iudicium.Autenticacion.Autenticacion.GetCurrentUserId();
        if (userId != 1 && e.Row.RowIndex == 0)
        {
            e.Row.Visible = false;
        }
        try
        {
            LinkButton lnk = (LinkButton)e.Row.Cells[3].FindControl("DeleteLinkButton");
            if (lnk != null && lnk.CommandArgument.Equals("1"))
                lnk.Visible = false;
        }
        catch { }

    }

    protected void UsuariosDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            log.Error("No se pudo obtener los Usuarios a travez de la busqueda", e.Exception);
            e.ExceptionHandled = true;
        }
    }
    protected void UsuariosDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        string query = SearchTextBox.Text.Trim();
        if (string.IsNullOrEmpty(query))
        {
            WhereSqlHiddenField.Value = " 1 = 1 ";
            return;
        }
        string where = " ";
        where += UtilitatiosBusqueda.CrearQuery(UtilitatiosBusqueda.TipoDatoDb.TextoCompleto, "p.[nombre]", query) + " OR ";
        where += UtilitatiosBusqueda.CrearQuery(UtilitatiosBusqueda.TipoDatoDb.Texto, "p.[expedicionCedula]", query) + " OR ";
        where += UtilitatiosBusqueda.CrearQuery(UtilitatiosBusqueda.TipoDatoDb.Texto, "usr.[nombreUsuario]", query) + " OR ";
        where += UtilitatiosBusqueda.CrearQuery(UtilitatiosBusqueda.TipoDatoDb.Texto, "rol.[nombre]", query);
        WhereSqlHiddenField.Value = where;
    }
}
